package model.scaling;

import java.util.List;

import model.IObservable;
import model.auxillary.ParameterCollectionScaling;

//#Neu
/**
 * The interface {@code ICalculatableScaling} is for every scaling class that 
 * can be calculated in some way.
 * @author Sebastian Perlwitz
 *
 */
public interface ICalculatableScaling extends IObservable {
	
	/**
     * Whether all parameters that have to be set by the user are set or not.
     * @return <b>true</b> when all parameters are set.
     */
    public boolean allSet();
    
    /**
     * To start the calculation.     
     */    
    public void calculate();
	
    /**
     * To find out if the calculation was aborted.
     * @return <b>true</b> when calculation was aborted,<br>
     * <b>false</b> otherwise.
     */
    public boolean aborted();
    
    /**
     * To find out whether the last calculation caused errors.
     * @return <b>true</b> when calculation caused errors,<br>
     * <b>false</b> otherwise.
     */
    public boolean getError();
    

    /**
     * To get the results of the calculation.
     * @return the results.
     */
    public List<ParameterCollectionScaling> getResults();
    

}
